import React, { Fragment, useContext, useEffect, useRef, useState } from 'react';
import Dialog from './dialog';
import BleUtil from '../../utils/bleUtil';
const DialogContext = React.createContext();
/*
dialog.showDialog({
    // 弹窗标题 ps 默认:温馨提示 null:隐藏头部
    title: null,
    // 弹窗主体
    content: <Text>内容内容内容</Text>,
    // 底部按钮 ps 默认:单按钮 null:隐藏底部
    button: [
        {
            // 按钮文本
            text: '取消',
            // 按钮容器样式
            contentStyle: {},
            // 按钮不可点击状态容器样式
            disabledContentStyle: {},
            // 按钮文本样式
            fontStyle: {},
            // 按钮不可点击状态文本样式
            disabledFontStyle: {}
        },
        {
            text: '确定',
            // 按钮点击事件回调
            onPress: () => {
                alert('xxx');
            },
            // 按钮是否可点击
            disabled: true,
            // 按钮事件是否关闭弹窗
            pressHide: false,
            // 按钮标签
            tag: 'cancel',
            // 当设置 duration 自动关闭时, 或者 clickOnMask 时, 如果只一个 button, 会使用该 button 的 onPress 作为回调, 如果有多个 button, 会使用 onClose 为 true 的 onPress 作为回调
             onClose: false
        }
    ],
* */
export function useDialog() {
    const context = useContext(DialogContext);
    const alert = (config) => {
        if (!context.showDialog) {
            return;
        }
        context.showDialog(config);

    };

    const alertConfirm = (title,onConfirm)=>{
        alert({
            title:title,
            button: [
                {
                    text: '确定',
                    onPress: onConfirm,
                    pressHide: true,
                    tag: 'confirm',
                    onClose: false
                },
                {
                    text: '取消',
                    onPress: () => {

                    },
                    pressHide: true,
                    tag: 'cancel',
                    onClose: false
                },
            ]
        })
    }

    const hide = ()=>{
        context.hideDialog()
    }
    return {
        alert,alertConfirm, hide
    };
}

export function DefaultDialog(props) {
    const ref = useRef({});
    const forceUpdate = useState()[1];
    useEffect(
        () => {
            forceUpdate({});
        },
        [ref.current]
    );

    return (
        <Fragment>
            <DialogContext.Provider value={ref.current}>{props.children}</DialogContext.Provider>
            <Dialog ref={ref} />
        </Fragment>
    );
}
